//package com.jackrain.clouddata.oms.mq;
//
//import com.aliyun.openservices.ons.api.ConsumeContext;
//import com.aliyun.openservices.ons.api.Message;
//import com.jackrain.nea.util.ValueHolder;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.cglib.proxy.MethodInterceptor;
//import org.springframework.cglib.proxy.MethodProxy;
//
//import java.io.PrintWriter;
//import java.io.StringWriter;
//import java.lang.reflect.Method;
//
///**
// * Created by ZC 2017/5/31.
// */
//@Slf4j
//public class MQLogIntercept implements MethodInterceptor {
//
//
//    @Override
//    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
//
//
//        Object rev = null;
//
////        log.info("Before invoke " + method.getName());
////        Object result =rev = methodProxy.invokeSuper(o, objects);
////        log.info("After invoke" + method.getName());
//
//
//        try {
//            //执行织入的日志
//            if (method.getName().equals("consume")) {
//                //1
//                beforeConsume((Message) objects[0], (ConsumeContext) objects[1]);
//                //2
//                rev = methodProxy.invokeSuper(o, objects);
//                //5
//            } else if (method.getName().equals("mqConsume")) {
//                //3
//                rev = methodProxy.invokeSuper(o, objects);
//                //4
//                AfterConsume((ValueHolder) rev, (Message) objects[0], (ConsumeContext) objects[1]);
//            }
//        } catch (Exception e) {
//            //更新错误日志
//            StringWriter sw = new StringWriter();
//            PrintWriter pw = new PrintWriter(sw);
//            e.printStackTrace(pw);
//            ThrowableConsume((Message) objects[0], (ConsumeContext) objects[1], sw.toString());
//        }
//
//        return rev;
//    }
//
//    /**
//     * MQ日志
//     */
//    public void beforeConsume(Message message, ConsumeContext context) {
//
//
//
//    }
//
//    /**
//     * MQ日志
//     */
//    public void AfterConsume(ValueHolder valueHolder, Message message, ConsumeContext context) {
//
//
//
//    }
//
//    public void ThrowableConsume(Message message, ConsumeContext context, String error) {
//
//
//
//    }
//
//
//}
